package libcore.kotpref

import android.content.Context
import kotlin.properties.ReadWriteProperty

abstract class KotPrefBase {
    abstract val kotPrefName: String

    internal val sharedPreferences by lazy {
        KotPref.context.getSharedPreferences(
            kotPrefName,
            Context.MODE_PRIVATE
        )
    }

    protected fun <T> pref(
        key: String,
        defaultValue: T
    ): ReadWriteProperty<KotPrefBase, T> {
        // 这里可以判断T是null且没有指定泛型吗
//        if (isNothing(defaultValue)) {
//            error("无法确定类型，请指定泛型如String?")
//        }
        return KotPrefProperty(key, defaultValue)

    }


//    protected fun intPref(
//        key: String,
//        defaultValue: Int
//    ): ReadWriteProperty<KotPrefBase, Int> {
//        return IntPref(key, defaultValue)
//
//    }
}